import {defineStore} from "pinia"
// 引入发送请求获取菜单的方法
import * as api from "@/api/permission"
// 引入完整的路由表
import routes from "@/router/generatorRoutes"
// 引入递归求routes的方法
import recursionRoutes from "@/utils/recursionRoutes"
// 引入动态路由
import dynamicRoutes  from "@/router/dynamicRoutes"
// 引入静态路由
import staticRoutes from "@/router/staticRoutes"
// 引入路由对象
import router from "@/router"

export const usePermission = defineStore('permission',{
    state(){
        return {
            menulist:[],
            logout:false // 是否退出
        }
    },
    actions:{
        fetch_menulist(){
            // 发起请求获取菜单
            return api.getMenuApi()
                .then(res => {
                    // console.log(res)
                    // console.log(routes)

                    // 已经获取了用户的路由
                    let userRoutes = recursionRoutes(res.data.menuList,routes)
                    // console.log(userRoutes)
                    // 给menulist赋值
                    this.menulist = userRoutes;


                    // 开始动态添加路由
                    // 1、先从动态路由中，找到路径是"/"的路有对象
                    let target = dynamicRoutes.find(route => route.path === '/')
                    // 2、将用户路由，变成他的孩子
                    target.children = userRoutes
                    // 3、静态路由也要添加到dynamicRoutes的孩子里面
                    target.children = [...target.children,...staticRoutes]
                    // 4、使用addRoutes方法，将dynamicRoutes添加到路由的routes配置中
                    router.addRoute(target)
                })
        }
    },
    getters:{
        
    }
})